from __future__ import annotations

from .. import migration


@migration.migration_class("ad-fixwin-cfg-migration", 8)
class AdFixwinConfigMigration(migration.Migration):
    """迁移"""

    async def need_migrate(self) -> bool:
        """判断当前环境是否需要运行此迁移"""
        return isinstance(
            self.ap.pipeline_cfg.data["rate-limit"]["fixwin"]["default"],
            int
        )

    async def run(self):
        """执行迁移"""
        
        for session_name in self.ap.pipeline_cfg.data["rate-limit"]["fixwin"]:

            temp_dict = {
                "window-size": 60,
                "limit": self.ap.pipeline_cfg.data["rate-limit"]["fixwin"][session_name]
            }
            
            self.ap.pipeline_cfg.data["rate-limit"]["fixwin"][session_name] = temp_dict

        await self.ap.pipeline_cfg.dump_config()